/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.core.manager;


import com.brain.core.configuracion.WebServletContextListener;
import com.brain.core.dto.BitacoraDto;
import com.brain.core.exception.DAOException;
import com.brain.core.hibernate.dao.DAOGenerico;
import com.brain.core.view.mbean.SessionMBean;
import com.brain.segu.mbean.RolMBean;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;

/**
 *
 * @author Indra
 */
@Service
public class BitacoraManager extends ComunManager<BitacoraDto> implements Serializable {

    private static Logger logger = Logger.getLogger(BitacoraManager.class);
    
    @Resource
    private DAOGenerico<BitacoraDto> springHibernateDao;

    public List<BitacoraDto> obtenerTodos() throws DAOException {
        return springHibernateDao.listarTodosDtos(BitacoraDto.class);
    }

    public List<BitacoraDto> obtenerConFiltro(Map<String, Object> filtros) throws DAOException {
        return springHibernateDao.obtenerDtosConFiltros(BitacoraDto.class, filtros);
    }

    public List<BitacoraDto> obtenerConFiltroConOrden(Map<String, Object> filtros, Map<String, String> orden) throws DAOException {
        return springHibernateDao.obtenerDtosConFiltrosConOrden(BitacoraDto.class, filtros, orden);
    }

    public List<BitacoraDto> obtenerBitacorasEntidad(Long entidad, Long registro) throws DAOException {

        Map<String, Object> map = new HashMap<String, Object>();
        map.put("entidad", entidad);
        map.put("registro", registro);
        Map<String, String> mapFiltro = new HashMap<String, String>();
        mapFiltro.put("id", "desc");
        
        return springHibernateDao.obtenerDtosConFiltrosConOrden(BitacoraDto.class, map, mapFiltro);
    }

    public BitacoraDto obtenerPorId(Long id) throws DAOException {
        return springHibernateDao.obtenerDtoPorId(BitacoraDto.class, id);
    }
    
    public void cargarBitacoraEntidad(Long entidad, Long registro) {
        List<BitacoraDto> lista = null;
        try {
            
            lista = obtenerBitacorasEntidad(entidad, registro);
        } catch (DAOException ex) {
            logger.error(ex);
            lista = null;
        }
        SessionMBean mbean = (SessionMBean) WebServletContextListener.getApplicationContext().getBean("sessionMBean");
        mbean.setListaBitacoras(lista);
    }
}
